<?php
/*
 * Autor: Adrian Lewacki
 * Klasa odpowiadająca za obsługę użytkownika, logowanie, rejestracja, poziomy uprawnien
*/
require_once 'db_class.php';
require_once 'bazaDanych.php';		//(Darek)
//-------------------------------------------
//		Klasa odpowiadająca za obsługę zapytań użytkownika
//-------------------------------------------

class Uzytkownik_class
{
	//dane do logowania
	private $login;
	private $haslo;
	private $ostatnie_logowanie;
	//dodatkowo do rejestracji 
	private $id_osoba;
	private $email;
	private $data_rejestracji; //pole ukryte w formularzu
	private $administrator; 
	private $aktywny; 
	//
	private $imie;
	private $nazwisko;
	private $plec;
	private $data_urodzenia;
	private $nazwisko_panienskie;
	//powysylac tutaj dane z funkcji 


//-----------------------------------------
//		Logowanie
//----------------------------------------
	public function Zaloguj($login,$haslo)
	{
	//----------------------------
	// 			TODO
	//----------------------------
	//przeniesc wyswietlanie bledow do login.php
	
		//session_start(); sesja startuje w login.php, wiec tutaj jest zbedna
		// jeśli nie ma jeszcze sesji "logged_in" i "user_id" to wypełniamy je domyślnymi danymi
		if(!isset($_SESSION['logged_in'])) 
		{
			$_SESSION['logged_in'] = false;
			$_SESSION['user_id'] = -1;
			$_SESSION['login'] = 'Niezalogowany';
		}
			
		$db = new DB_class();
		$db->connect();
				// sprawdzamy czy user nie jest przypadkiem zalogowany
				if(!$_SESSION['logged_in']) 
				{
					// jeśli zostanie naciśnięty przycisk "Zaloguj"
					if(isset($login))
					{
						//filtrujemy dane
								$login = $db->filtruj($login);  //$this->login
								$haslo = $db->filtruj($haslo); //$this->haslo
								$timestamp = time(); //czas zalogowania
						//kodujemy hasło
						$haslo = $db->koduj_dane($haslo);
				 
						// sprawdzamy prostym zapytaniem sql czy podane dane są prawidłowe
						$db->query("SELECT `login` FROM `uzytkownik` WHERE `login` = '{$login}' AND `haslo` = '{$haslo}' LIMIT 1");
						//mozna tez tak "SELECT `haslo` FROM `uzytkownik` WHERE `login` = '{$login}';"
						//a potem porownac haslo z tym podanym przez usera
						if($db->countRows()>0)
						{
							// jeśli tak to ustawiamy sesje "logged_in" na true oraz do sesji "user_id" wstawiamy id usera
							$dbdata = $db->loadRows(); 
							$_SESSION['logged_in'] = true;
							$_SESSION['user_id'] = $dbdata[0]['login']; //$this->login
							$_SESSION['login'] = $dbdata[0]['login']; //$this->login
							//wysylamy czas zalogowania do bazy
							$db->query("UPDATE `uzytkownik` SET `ostatnie_logowanie` = '{$timestamp}' WHERE `login` = '{$login}'");
							$db->disconnect();
							echo '<div id="content"><p class="sukces">Zalogowano. </p></div>';
							header("Refresh: 1; URL=index.php");
						}
						else 
						{
							echo '<div id="content"><p class="blad">Podany login i/lub hasło jest nieprawidłowe.</p></div>'; 
							header("Refresh: 2; URL=login.php");
						}
					}	
				}
				/*
				else
				{
					echo '<p class="blad">Jesteś już zalogowany!</p>';
					header("Refresh: 2; URL=index.php");
					exit;
				}*/
	}
	
//-----------------------------------------
//		Wylogowanie
//----------------------------------------

	public function Wyloguj()
	{
		//startujemy sesje
		session_start();
		//ustawiamy wartosci domyslne
		if(isset($_SESSION['logged_in'])) 
		{
			$_SESSION['logged_in'] = false;
			$_SESSION['user_id'] = -1;
			$_SESSION['login'] = 'Niezalogowany';
		}
		//wracamy na strone glowna
		header("Location: index.php");
		exit;
	}
	
//-----------------------------------------
//		Czy zalogowany?
//----------------------------------------
	
	// funkcja na sprawdzanie czy user jest zalogowany, jeśli nie to wyświetlamy komunikat
	public function CzyZalogowany()
	{
		if(!isset($_SESSION['logged_in'])) 
		{
			$_SESSION['logged_in'] = ''; //
			$_SESSION['user_id'] = -1;
			$_SESSION['login'] = ''; //
			return false;
		}
		elseif(!$_SESSION['logged_in']) 
		{
			return false;
		}
		elseif(
				isset($_SESSION['logged_in']) && $_SESSION['logged_in'] != '' &&
				isset($_SESSION['user_id']) && $_SESSION['user_id'] != -1 &&
				isset($_SESSION['login']) &&  $_SESSION['login'] != ''
			)
			return true;
	}

//-----------------------------------------
//		Czy Administrator
//-----------------------------------------
	
	public function CzyAdmin($u=null)
	{
		if(isset($u))
			$login = $u;
		else
			$login = $_SESSION['login'];
		//pobieramy dane użytkownika z bazy
		$db = new DB_class();
		$db -> connect();
		$db->query("SELECT `administrator` FROM `uzytkownik` WHERE `login` = '{$login}' LIMIT 1");
		$db->disconnect();
		if($db->countRows()>0)
		{
			$data = $db->loadRows();
			$administrator = $data[0]['administrator'];
			if($administrator == 1)
				return true;
			else
				return false;
		}
		else
			return false;
	}
	
//-----------------------------------------
//		Czy koto użytkownika jest aktywne
//-----------------------------------------
	
	public function CzyAktywny()
	{
		$login = $_SESSION['login'];
		//pobieramy dane użytkownika z bazy
		$db = new DB_class();
		$db -> connect();
		$db->query("SELECT `aktywny` FROM `uzytkownik` WHERE `login` = '{$login}' LIMIT 1");
		$db->disconnect();
		if($db->countRows()>0)
		{
			$data = $db->loadRows();
			$aktywny = $data[0]['aktywny'];
			if($aktywny == 1)
				return true;
			else
				return false;
		}
		else
			return false;
	}
	
//-----------------------------------------
//		Wysylanie potwierdzenia konta mailem
//-----------------------------------------
	
	public function WyslijMailPotwierdzajacy($email, $kod_aktywujacy)
	{
		$domena = 'adriano66.2ap.pl/dzefo';
		$wysylajacy = 'admin@strona.pl';
		$naglowki = 'Reply-to: '. $wysylajacy .' <'. $wysylajacy .'>'.PHP_EOL;
		$naglowki .='From: '. $wysylajacy .' <'. $wysylajacy .'>'.PHP_EOL;
		$naglowki .= 'MIME-Version: 1.0'.PHP_EOL;
		$naglowki .= 'Content-type: text/html; charset=utf-8'.PHP_EOL;
		$wiadomosc = 
		'<html>
			<head>
				<title>Witaj, oto wiadomość aktywująca twoje konto</title>
			</head>
			<body>
				<p>Kliknij w <a href="'.$domena.'/index.php?aktywacja='. $kod_aktywujacy .'">link potwierdzający</a>, by zacząć korzystać z serwisu.</p>
			<body/>
		</html>';
		if(mail($email, $domena .' - aktywacja konta', $wiadomosc, $naglowki))
		{
			echo'<p class="sukces">Na podany adres e-mail wysłany został link aktywujący konto.</p>';
		}
		else
			echo'<p class="blad">Wystąpił bład podczas wysyłania wiadomości aktywującej konto!</p>';		
	}
//-----------------------------------------
//		Czy koto użytkownika jest aktywne
//-----------------------------------------
	
	public function AktywacjaKonta()
	{
		$db = new DB_class();
		$db -> connect();
		$kod = $db->filtruj($_GET['aktywacja']);
		//zamiast maila dac kod aktywacyjy i umiescic go w bazie przy rejestracji
		$db->query("SELECT `login`, `aktywny` FROM `uzytkownik` WHERE `kod_aktywujacy` = '{$kod}' LIMIT 1");
		
		if($db->countRows()>0)
		{
		//zmien na aktywnego
			$data = $db->loadRows();
			$aktywny = $data[0]['aktywny'];
			if($aktywny == 1)
				return false;
			else
			{
				$db->query("UPDATE `uzytkownik` SET `aktywny` = 1 WHERE `kod_aktywujacy` = '{$kod}'");
				return true;
			}
		}
		return false;
		
		$db->disconnect();
	}

//-----------------------------------------
//		Rejestracja 
//-----------------------------------------
	
	public function Zarejestruj($a=null)
	{
	//----------------------------
	// 			TODO
	//----------------------------
	//dodac sprawdzanie istniejacych wezlow przy rejestracji i dane rodzicow
		$db = new DB_class();
		$db->connect();
		
		$login = $db->filtruj($_POST['login']);
		$haslo = $db->koduj_dane($db->filtruj($_POST['haslo']));
		$email = $db->filtruj($_POST['email']);
		$data_rejestracji = time();
		$administrator=0;
		$aktywny= (isset($a))?1:0;
		$kod_aktywujacy = $db->koduj_dane($email);
		//unset($_POST['haslo']); //jakis blad ;]
		$imie = (isset($_POST['imie']))?$db->filtruj($_POST['imie']):'';
		$nazwisko = (isset($_POST['nazwisko']))?$db->filtruj($_POST['nazwisko']):'';
		$plec = (isset($_POST['plec']))?$_POST['plec']:1;
		//pobieranie daty urodzenia
		$dzien = (isset($_POST['dzien_urodzenia']))?$_POST['dzien_urodzenia']:0;
		$miesiac = (isset($_POST['miesiac_urodzenia']))?$_POST['miesiac_urodzenia']:0;
		$rok = (isset($_POST['rok_urodzenia']))? $_POST['rok_urodzenia']:0;
		$godziny = 0;
		$minuty = 0;
		$sekundy = 0;
		//$data_urodzenia = mktime($godziny, $minuty, $sekundy, $miesiac, $dzien, $rok);
		$data_urodzenia =  $dzien .'-'.$miesiac.'-'.$rok;
		$data_urodzenia =  new DateTime($data_urodzenia);
		$data_urodzenia = date_format($data_urodzenia, 'Y-m-d');
		//$imie_ojca = $db->filtruj($_POST['imie_ojca']);
		//$imie_matki = $db->filtruj($_POST['imie_matki']);
		$nazwisko_panienskie = (isset($_POST['nazwisko_panienskie']))?$db->filtruj($_POST['nazwisko_panienskie']):'';
		
		//dodawanie wezla przy rejestracji (Darek)
		$os=new Osoba(-1, $imie, $nazwisko, $data_urodzenia, null, $plec, null, null, $nazwisko_panienskie);
		$we=new Wezel(-1, null, $login, $os);
		
		$baza=new BazaDanych();
		$idWezla=$baza->dodajWezel($we);
		if($idWezla)
		{
			//dodanie nowego uzytkownika do bazy
			$db->query("INSERT INTO `uzytkownik`(`login`, `haslo`, `id_osoba`, `email`, `data_rejestracji`, `administrator`, `aktywny`, `kod_aktywujacy`) VALUES ('{$login}', '{$haslo}', '{$idWezla}', '{$email}', '{$data_rejestracji}', '{$administrator}', '{$aktywny}', '{$kod_aktywujacy}')");
			if($db->countRows(false)>0)
			{
				echo '<p class="sukces">Dodano użytkownika do bazy</p>';
			//wyslac maila z kodem
				$this->WyslijMailPotwierdzajacy($email, $kod_aktywujacy);
			}
			//wrocic na strone glowna
			header("Refresh: 2; URL=index.php");
		}
	}
	
//Koniec klasy Uzytkonik_class
}

//-----------------------------------------
//		Przyklad uzycia
//-----------------------------------------
/*
$user = new Uzytkownik_class();
$user->Zarejestruj();
$user->Zaloguj($_POST['login'],$_POST['haslo']);
$user->CzyZalogowany();
$user->CzyAdmin();
$user->Wyloguj();
*/
?>